import numpy as np
import pandas as pd

# # 3.1 对象的转置
# # 创建畸形 df
# v = [ [53, 64, 72, 82], [ '女', '男', '男', '女' ] ]
# i = [ '年龄', '性别' ]
# c = [ '1 号', '2 号', '3 号', '4 号' ]
# df = pd.DataFrame( v, index=i, columns=c )
# print(df)
# df = df.T
# print("# 转置")
# print(df)

# # 3.2 对象的翻转
# # 左右翻转
# print("# 左右翻转")
# df = df.iloc[:, ::-1]
# print(df)
# # 上下翻转
# print("# 上下翻转")
# df = df.iloc[::-1, :]
# print(df)

# # 3.3 对象的重塑
# # 数组法创建 sr
# i = [ '1 号', '2 号', '3 号', '4 号' ]
# v1 = [ 10, 20, 30, 40 ]
# v2 = [ '女', '男', '男', '女' ]
# v3 = [ 1, 2, 3, 4 ]
# sr1 = pd.Series( v1, index=i )
# sr2 = pd.Series( v2, index=i )
# sr3 = pd.Series( v3, index=i )
# # 字典法创建 df
# df = pd.DataFrame({"年龄":sr1, "性别":sr2})
# print("df")
# # 把 sr 并入 df 中
# print("# 把 sr 并入 df 中")
# df["牌照"] = sr3
# print(df)
# # 把 df['年龄']分离成 sr4
# print("# 把 df['年龄']分离成 sr4")
# sr4 = df["年龄"]
# print(sr4)


# 3.4 对象的拼接

# # （1）一维对象的合并
# # 创建 sr1 和 sr2
# v1 = [10, 20, 30, 40]
# v2 = [40, 50, 60]
# k1 = [ '1 号', '2 号', '3 号', '4 号' ]
# k2 = [ '4 号', '5 号', '6 号' ]
# sr1 = pd.Series( v1, index= k1 )
# sr2 = pd.Series( v2, index= k2 )
# print(sr1,'\n', sr2)
# # 合并
# print("# 合并")
# sr3 = pd.concat([sr1, sr2])
# print(sr3)
# # 检查行.index或列.columns是否有重复
# print(sr3.index)
# print(sr3.index.unique)

# # （2）一维对象与二维对象的合并
# # 即可理解为：给二维对象加上一列或者一行。
# # 创建 sr1 与 sr2
# v1 = [ 10, 20, 30]
# v2 = [ '女', '男', '男']
# sr1 = pd.Series( v1, index=[ '1 号', '2 号', '3 号'] )
# sr2 = pd.Series( v2, index=[ '1 号', '2 号', '3 号'] )
# df = pd.DataFrame({"年龄":sr1, "性别":sr2})
# print(df)
# # 加上一列
# print("# 加上一列")
# df["牌照"] = [1, 2, 3]
# print(df)
# # 加上一行
# print("# 加上一行")
# df.loc["4 号"] = [40, "女", 4]
# print(df)

# （3）二维对象的合并
# 设定 df1、df2、df3
v1 = [ [10, '女'], [20, '男'], [30, '男'], [40, '女'] ]
v2 = [ [1, '是'], [2, '是'], [3, '是'], [4, '否'] ]
v3 = [ [50, '男', 5, '是'], [60, '女', 6, '是'] ]
i1 = [ '1 号', '2 号', '3 号', '4 号' ]
i2 = [ '1 号', '2 号', '3 号', '4 号' ]
i3 = [ '5 号', '6 号' ]
c1 = [ '年龄', '性别' ]
c2 = [ '牌照', 'ikun' ]
c3 = [ '年龄', '性别', '牌照', 'ikun' ]
df1 = pd.DataFrame( v1, index=i1, columns=c1 )
df2 = pd.DataFrame( v2, index=i2, columns=c2 )
df3 = pd.DataFrame( v3, index=i3, columns=c3 )
print(f"df1\n{df1}\ndf2\n{df2}\ndf3\n{df3}")
# 合并列对象（添加列特征）
# axis 1左右，0上下
print("# 合并列对象（添加列特征）")
df = pd.concat([df1, df2], axis= 1)
print(df)
# 合并行对象（添加行个体）
print("# 合并行对象（添加行个体）")
df = pd.concat([df, df3], axis= 0)
print(df)

